/**
 * 这是定义用户操作的类
 * @type {Db}
 */
var mongodb=require('./db');
function User(name,password,email) {
    this.name=name;
    this.password=password;
    this.email=email;
}
//导出这个构造函数
module.exports=User;
//保存用户的信息
User.prototype.save=function (callback) {
    var user={
        name:this.name,
        password:this.password,
        email:this.email
    }
    //打开数据库
    mongodb.open(function (err,db) {
        if(err){
            return callback(err);
        }
        //读取数据库的集合,不存在会自动创建
        db.collection('users',function (err,collection) {
            if(err){
                mongodb.close();
                return callback(err);
            }
            //为name添加唯一索引值
            collection.ensureIndex('name',{unique:true});
            //插入数据
            collection.insert(user,{safe:true},function (err) {
                mongodb.close();
                if(err){
                    return callback(err);
                }
                //保存数据成功,没有返回值
                return callback(null);
            })
        })
    })
}
//查询用户
User.get=function (name,callback) {
    mongodb.open(function (err,db) {
        if(err){
            return callback(err);
        }
        //
        db.collection('users',function (err,collection) {
            if(err){
                mongodb.close();
                return callback(err);
            }
            //查询一条信息
            collection.findOne({name:name},function (err,user) {
                mongodb.close();
                if(err){
                    return callback(err);
                }
                //查询成功,获取一条用户信息
                return callback(null,user);
            })
        })
    })
}

//查询用户并修改密码
User.update=function (name,password,callback) {
    mongodb.open(function (err,db) {
        if(err){
            return callback(err);
        }
        db.collection('users',function (err,collection) {
            if(err){
                return callback(err);
            }
            collection.findOne({name:name},function (err,user) {
                if(err){
                    return callback(err);
                }
                //查询的用户存在进行，进行更新
                if(user){
                    //将password的值覆盖到
                    collection.update({name:name},{$set:{password:password}},function (err) {
                        if(err){
                            return callback(err);
                        }
                        //更改成功
                        return callback(null,user);
                    })
                }
            })
        })

    })
}
